home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earcd / phase5 / ppcrelease / examples / startupppc.c < prev    next >
C/C++ Source or Header  |  1998-02-21  |  2KB  |  66 lines

  1. /* Stefan Burstrom Source and concept
  2.  * Adapted by Ralph Schmidt
  3.  */
  4.  
  5. #include <exec/types.h>
  6. #include <exec/nodes.h>
  7. #include <exec/lists.h>
  8. #include <exec/memory.h>
  9. #include <utility/tagitem.h>
  10. #include <powerup/ppclib/interface.h>
  11. #include <powerup/ppclib/message.h>
  12. #include <powerup/ppclib/tasks.h>
  13. #include <powerup/gcclib/powerup_protos.h>
  14.  
  15. struct StartupMsg
  16. {
  17.     APTR    M68kPort; /* The PPCTask can send messages here */
  18.     LONG    Status;   /* When the task exits, it can fill in the status here */
  19. };
  20.  
  21. void    main(void)
  22. {
  23. struct StartupMsg    *startupMsg;
  24. APTR            Task;
  25. APTR            PPCMsg;
  26. APTR            PPCMessagePort;
  27.  
  28.   Task = PPCFindTask(NULL);
  29.  
  30.   startupMsg        =(struct StartupMsg *) PPCGetTaskAttr(PPCTASKTAG_STARTUP_MSGDATA);
  31.  
  32.   PPCMessagePort    =(APTR) PPCGetTaskAttr(PPCTASKTAG_MSGPORT);
  33.  
  34.   if (PPCMsg = PPCCreateMessage(PPCMessagePort,0)) /* We are sending zero length messages */
  35.   {
  36.     long    i;
  37.     for (i=0;i<4;i++) /* Send 4 dummy messages to the 68k task */
  38.     {
  39.       PPCSendMessage(startupMsg->M68kPort,
  40.                      PPCMsg,
  41.                      NULL,
  42.                      0,
  43.                      i); /* Send a number to the 68k task */
  44.  
  45.       PPCWaitPort(PPCMessagePort); /* Wait for the reply */
  46.  
  47.       PPCGetMessage(PPCMessagePort); /* Get the reply */
  48.     }
  49.   
  50.     /* Everything worked out ok, so we tell that to the main task */
  51.  
  52.     startupMsg->Status    =    1;
  53.  
  54.     /* Delete our Message */
  55.  
  56.     PPCDeleteMessage(PPCMsg);
  57.   }
  58.   else
  59.   {
  60.     /* Oops, not enough memory, fill in status in the startup message and exit
  61.      * The kernel will reply the message for us when we are done executing */
  62.  
  63.     startupMsg->Status    =    0;
  64.   }
  65. }
  66.